"""
stu_manager.py 学员管理模块，用于对学员对象进行增删改查之类的操作
模块中定义类StudentManager
类中的函数包括：内置和自定义的函数
    内置函数：__init(),__str__()
    自定义函数：根据具体需求，增删改查等功能
"""
from ch10.test import Student


def gender(args):
    pass


class StudentManager:
    def __init__(self):
        # 学员对象保存在列表中
        self.stu_list = []

    # 自定义函数,程序入口函数
    def run(self):
        """
        循环操作：
            显示功能界面
            用户输入
            根据用户输入，进入不同的功能
        """
        while True:
            # 1.调用显示功能界面菜单函数
            self.menu()
            # 2.让输入输入选择
            num = input('请输入您需要的功能编号:')
            # 3,根据用户输入进入不同功能函数
            if num == '1':
                # 调用添加函数
                self.add_stu()
            elif num == '2':
                self.del_stu()
            elif num == '3':
                self.modify_stu()
            elif num == '4':
                self.search_stu()
            elif num == '5':
                self.show()
            elif num == '6':
                # 将学员信息保存到文件
                self.save_stu()
            elif num == '7':
                break
            else:
                print('输入有误!')

    def menu(self):
        print('-' * 20)
        print('请选择功能菜单:')
        print('1:添加学员')
        print('2:删除学员')
        print('3:修改学员')
        print('4:搜索学员')
        print('5:显示所有学员')
        print('6:保存学员学员')
        print('7:退出系统')
        print('-' * 20)

    def add_stu(self):
        """
        添加功能：让用户输入学员信息，将其添加到列表中，再将对象添加到列表中
        :return:
        """
        print('--------------添加功能-------------')
        name = input('请输入学员姓名')
        gander = input('请输入学员性别:')
        tel = input('请输入学员电话:')
        # 构造对象
        stu = Student(name, gender, tel)
        self.stu_list.append(stu)
        print('添加成功')

    def def_stu(self):
        del_name = input('请输入要删除的学员姓名:')
        for i in self.stu_list:
            if i.name == del_name:
                self.stu_list.remove(i)
                print('删除成功')
                break
        else:
            print('查无此人')

    def modify_stu(self):
        pass

    def search_stu(self):
        pass

    def show(self):
        pass

    def save_stu(self):
        """
        保存学员信息(列表)到文件
        :return:
        """
        with open('data.txt', 'w') as f:
            # 学员信息保存在列表中，列表中每一个元素都是一个学员对象
            # 直接取出列表元素是学员对象的内存地址
            # e.__dict__取出对象的字典信息
            new_list = [e.__dict__ for e in self.stu_list]
            f.write(str(new_list))
